import machine
import time

class DoorController:
    def __init__(self, gpio_pin=12):
        """
        初始化控制门的GPIO引脚和门的状态模式
        :param gpio_pin: 控制门锁的GPIO引脚编号
        """
        self.door_pin = machine.Pin(gpio_pin, machine.Pin.OUT)
        self.mode = "CLOSED"  # 默认模式为常闭
        self.door_pin.value(0)  # 初始化时关闭门锁
    
    def set_mode(self, mode):
        """
        设置门的工作模式
        :param mode: 模式字符串，支持 "OPEN" 或 "CLOSED"
        """
        if mode in ["OPEN", "CLOSED"]:
            self.mode = mode
            print(f"Door mode set to: {self.mode}")
        else:
            print("Invalid mode. Please choose 'OPEN' or 'CLOSED'.")

    def open_door(self):
        """
        开门逻辑：将GPIO引脚置为高电平，维持3秒钟，然后恢复为低电平（仅在常闭模式下有效）。
        如果是常开模式，则不执行开门操作。
        """
        if self.mode == "OPEN":
            print("Current mode is OPEN, the door remains open.")
            return
        
        print("Door is opening... setting pin HIGH")
        self.door_pin.value(1)  # 高电平，打开门锁
        time.sleep(3)           # 等待3秒
        self.door_pin.value(0)  # 低电平，关闭门锁
        print("Door is closed... setting pin LOW")
    #常开模式
    def open_mode(self):
        self.door_pin.value(1)  # 高电平，打开门锁
    #常闭模式
    def close_mode(self):
        self.door_pin.value(0)  # 低电平，关闭门锁
        
        
